/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufc.quixada.adrs.comandos.admin;

import br.ufc.quixada.adrs.interfaces.Comando;
import br.ufc.quixada.adrs.model.Adrs;
import br.ufc.quixada.adrs.model.Estado;
import br.ufc.quixada.adrs.model.Municipio;
import br.ufc.quixada.adrs.service.AdrsService;
import br.ufc.quixada.adrs.service.EstadoService;
import br.ufc.quixada.adrs.service.MunicipioService;
import br.ufc.quixada.adrs.util.Msg;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 *
 * @author ismaily
 */
public class CmdMontaRelatorioQtPassoUm implements Comando {

    public String executa(HttpServletRequest request, HttpServletResponse response) {


        HttpSession session = request.getSession(true);
        String estado = (String) request.getParameter("estado");
        String municipio = (String) request.getParameter("cidade");
        clearSession(session);
        Estado estadoSele = null;
        Municipio municipioSele = null;
        AdrsService aServ = new AdrsService();
        List<Adrs> listAdrs = null;
        String tipoRela = (String) request.getParameter("tipoRela");

        if (tipoRela == null || tipoRela.trim().equals("null")) {
            session.setAttribute("erro", Msg.EMPTY_SELECTION_ERROR_REPORT_TYPE);
            return "/admin/admin_monta_relatorio_qt_passo_um.jsp";
        }
        if (estado == null || estado.trim().equals("-10")) {
            session.setAttribute("erro", Msg.EMPTY_SELECTION_ERROR_ESTADO);
            return "/admin/admin_monta_relatorio_qt_passo_um.jsp";
        }
        if (estado.equals("TODOS") || estado.trim().equals("-1")) {
            estadoSele = new Estado();
            estadoSele.setId(-1l);
            estadoSele.setNome("TODOS");
            municipioSele = new Municipio();
            municipioSele.setNome("TODOS");
            municipioSele.setId(-1l);
            listAdrs = aServ.getAllAdrs();
        } else if (municipio.equals("TODOS") || municipio.trim().equals("-1")) {
            estadoSele = new EstadoService().getEstadoById(Long.parseLong(estado));
            municipioSele = new Municipio();
            municipioSele.setNome("TODOS");
            municipioSele.setId(-1l);
            listAdrs = aServ.getByEstadoId(estadoSele.getId());
        } else {
            estadoSele = new EstadoService().getEstadoById(Long.parseLong(estado));
            municipioSele = new MunicipioService().getMunicipioById(Long.parseLong(municipio));
            listAdrs = aServ.getByMunicipioId(municipioSele.getId());
        }

        if (listAdrs == null || listAdrs.isEmpty()) {
            session.setAttribute("erro", Msg.NOT_FOUND_ERROR_ADRSS);
            return "/admin/admin_monta_relatorio_qt_passo_um.jsp";
        }

        if (tipoRela.equalsIgnoreCase("relaMovimentacao")) {
            session.setAttribute("comandoRela", "CmdMontarRelatorioQtMovimentacao");
            session.setAttribute("relaMovimentacao", tipoRela);
        } else if (tipoRela.equalsIgnoreCase("relaRebanho")) {
            session.setAttribute("comandoRela", "CmdmontarRelatorioQtRebanho");
            session.setAttribute("relaRebanho", tipoRela);
        } else if(tipoRela.equalsIgnoreCase("relaDescartes")){
            session.setAttribute("comandoRela", "CmdMontarRelatorioQtDescartes");
            session.setAttribute("relaDescartes", tipoRela);
        }else{
            session.setAttribute("erro", "Escolha um tipo de relatório.");
            return "/admin/admin_monta_relatorio_qt_passo_um.jsp";
        }
        session.setAttribute("estadoSelecionado", estadoSele);
        session.setAttribute("municipioSelecionado", municipioSele);
        session.setAttribute("listAdrs", listAdrs);
        return "/admin/admin_monta_relatorio_qt_passo_dois.jsp";
    }



    public void clearSession(HttpSession session){

        session.removeAttribute("relaDescartes");
        session.removeAttribute("relaRebanho");
        session.removeAttribute("relaMovimentacao");

    }
}
